监听器类的配置

提供监听器类

Web 应用的开发人员提供实现了一个或多个在 javax.servlet API中的监听器接口的监听器类。每一个监听器类必须有一个无参构造器。监听器类打包到 WAR 包中,或者在 WEB-INF/classes 归档项下,或者在 WEB-INF/lib 目录的一个 JAR 内部。

部署声明

监听器类在 Web 应用部署描述符中使用 listener 元素声明。它们根据类名列出的顺序就是它们被调用的顺序。与其他监听器不同,AsyncListener 类型的监听器可能仅通过编程式注册(使用一个ServletRequest)。

监听器注册

Web 容器创建每一个监听器类的一个实例,并在应用处理第一个请求之前为事件通知注册它。Web容器根据他们实现的接口注册监听器实例,且按照它们出现在部署描述符中的顺序。在 Web 应用执行期间,监听器按照它们注册的顺序被调用,但也有例外,例如,HttpSessionListener.destroy 按照相反的顺序调用。参考 8.2.3节 “装配 web.xml、web-fragment.xml 描述符和注解”。

关闭时通知

在应用关闭时,监听器以它们声明时相反的顺序得到通知,且通知会话监听器在通知上下文监听器之前。通知会话监听器 session 失效必须在通知上下文监听器关闭之前。